package com.app.web.goods.goods;

import com.app.utils.base.j2se.Common;
import com.app.utils.base.j2se.Convert;
import com.app.web.goods.category.Category;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Description
 * Created by 王伟
 * Date create on 18:42 2019/11/26.
 */
@Service
public class GoodsService {
    @Autowired
    private GoodsDao goodsDao;

    /**
     * 查询项目信息
     *
     * @param id
     * @return
     */
//    @RedisCache
    public Map<String, Object> goods(int id, int role) {
        Map<String, Object> param = new HashMap<>();
        param.put("id", id);
        List<Map<String, Object>> goodsList = goodsDao.goodsList(param);

        return Common.isNotEmpty(goodsList) ? simple(goodsList.get(0), role) : null;
    }

    /**
     * 查询项目列表
     *
     * @param page
     * @return
     */
//    @RedisCache(timeOut = 600)
    public List<Map<String, Object>> goodsList(Map<String, Object> param, int page) {

        param.put("page", page);
        param.put("startSize", (page - 1) * 20);
        param.put("endSize", 20);
        List<Map<String, Object>> goodsList = goodsDao.goodsList(param);
        return goodsList.stream().peek(x -> {
//            simple(x, Convert.objToInt(param.get("role")));
            if(Common.isEmpty(x.get("units"))){
                x.put("units","[]");
            }
        }).collect(Collectors.toList());
    }

    private Map<String, Object> simple(Map<String, Object> goods, int role) {
        if(role==0){
            goods.put("inner_price", goods.get("price"));
        }else{
            for (int i = 1; i < 5; i++) {
                String price = "price" + i;
                if (i == role || (i == 4 && role == 5)) {
                    goods.put("inner_price", goods.get(price));
                }
//            goods.remove(price);
            }
        }
        return goods;
    }

    /**
     * 根据商家ID 或者 医生ID查询所有可做项目类目
     *
     * @param id
     * @param type  1 商家
     * @param count
     * @return
     */
//    @RedisCache(timeOut = 3600)
    public List<Category> goodsCategoryByType(int id, int type, int count) {
        return goodsDao.goodsCategoryByType(id, type, count);
    }

    /**
     * 根据多个项目ID查询项目的信息
     *
     * @param list
     * @return
     */
    public List<Map<String, Object>> goodsCollectionList(List<Integer> list) {
        return goodsDao.goodsCollectionList(list);
    }

    /**
     * @ 名称:记录用户活动预约信息
     * @ 创建人: zhangmijia
     * @ 创建时间: 22:44
     * @ 修改人和其它信息
     * @ 参数：
     * @ 返回值:
     */
    public void addActSubscribe(Map<String, Object> body) {
        goodsDao.addActSubscribe(body);
    }

    /**
     * @ 名称:用户活动预约信息
     * @ 创建人: zhangmijia
     * @ 创建时间: 22:47
     * @ 修改人和其它信息
     * @ 参数：
     * @ 返回值:
     */
    public Map<String,Object> userActSubscribe(int uid,int actId,int arrival) {
        return goodsDao.userActSubscribe(uid,actId,arrival);
    }

    /**
     * @ 名称:用户到店核销
     * @ 创建人: zhangmijia
     * @ 创建时间: 11:03
     * @ 修改人和其它信息
     * @ 参数：
     * @ 返回值:
     */
    public void actArrival(int uid,int bossUid, int id,int shareId) {
        goodsDao.actArrival(uid,bossUid,id,shareId);
    }

    /**
     * @ 名称:获取活动邀请需要进行奖励列表
     * @ 创建人: zhangmijia
     * @ 创建时间: 19:58
     * @ 修改人和其它信息
     * @ 参数：
     * @ 返回值:
     */
    public List<Map<String, Object>> arrivalRewardList() {
        return goodsDao.arrivalRewardList();
    }

    /**
     * @ 名称:准备开始进行核销奖励打款
     * @ 创建人: zhangmijia
     * @ 创建时间: 20:08
     * @ 修改人和其它信息
     * @ 参数：
     * @ 返回值:
     */
    public int changeRewardStatus(int uid, int actId,int oldRewardStatus,int rewardStatus) {
        return goodsDao.changeRewardStatus(uid,actId,oldRewardStatus,rewardStatus);
    }
}
